/*
 * Copyright 2020 Mamoe Technologies and contributors.
 *
 * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
 * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
 *
 * https://github.com/mamoe/mirai/blob/master/LICENSE
 */

package net.mamoe.mirai.api.http.context.session.manager

tailrec fun SessionManager.generateSessionKey(): String {
    val key = generateRandomSessionKey()
    this[key]?.apply {
        return generateSessionKey()
    }

    return key
}

// From @jiahua.liu in 2020/1/17 23:25
fun generateRandomSessionKey(): String {
    val all = "QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm"
    return buildString(capacity = 8) {
        repeat(8) {
            append(all.random())
        }
    }
}